package job;

import java.util.*;

/**
 * Author: Zhang Dongwei
 * Date: 2023/7/29 18:51
 */
public class fx {
    public static void main(String[] args) {

//        System.out.println(Math.pow(2, 32));

//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        long[] ice = new long[n];
//        for (int i = 0; i < n; i++) {
//            ice[i] = in.nextLong();
//        }
//        System.out.println(Arrays.toString(ice));
//        int flag = 0;
//        long l = Long.MAX_VALUE, r = Long.MAX_VALUE;
//        for (int i = 1; i < n; i++){
//            if (ice[i] == -1){
//                flag = i;
//                break;
//            }
//        }
//        System.out.println("flag "+ flag);
//        System.out.println("dfdsf"+flag);
//        for (int i = 0; i < flag; i++){
//            if (ice[i] < l){
//                l = ice[i];
//            }
//        }
//        System.out.println("l " + l);
//        for (int i = flag + 1; i < n; i++){
//            if (ice[i] < r){
//                r = ice[i];
//            }
//        }
//        System.out.println("r " + r);
//        System.out.println(l + r);



//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        int[] ice = new int[n];
//        int flag = 0;
//        long l = Long.MAX_VALUE, r = Long.MAX_VALUE;
//        for (int i = 0; i < n; i++){
//            ice[i] = in.nextInt();
//            if (ice[i] != -1 && ice[i] < l && flag == 0){
//                l = ice[i];
//            }else if (ice[i] != -1 && ice[i] < r && flag == 1){
//                r = ice[i];
//            }else {
//                flag = 1;
//            }
//        }
//        System.out.println(l + r);


//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        int[] a = new int[n];
//        int[] b = new int[n];
//        long sum = 0;
//        for (int i = 0; i < n; i++){
//            a[i] = in.nextInt();
//        }
//        for (int i = 0; i < n; i++){
//            b[i] = in.nextInt();
//        }
//        for (int i = 0; i < n; i++){
//            if (a[i] * b[i] >= 0){
//                sum += Math.abs(a[i] - b[i]);
//            }else {
//                sum += Math.abs(a[i] + b[i]);
//            }
//        }
//        System.out.println(sum);



//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        long[] a = new long[n];
//        long[] b = new long[n];
//        long sum = 0;
//        for (int i = 0; i < n; i++){
//            a[i] = in.nextLong();
//        }
//        for (int i = 0; i < n; i++){
//            b[i] = in.nextLong();
//        }
//        for (int i = 0; i < n; i++){
//            if (a[i] * b[i] >= 0){
//                sum += Math.abs(a[i] - b[i]);
//            }else {
//                sum += Math.abs(a[i] + b[i]);
//            }
//        }
//        System.out.println(sum);


//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        int[] ice = new int[n];
//        int flag = 0;
//        int l = Integer.MAX_VALUE, r = Integer.MAX_VALUE;
//        for (int i = 0; i < n; i++){
//            ice[i] = in.nextInt();
//            if (ice[i] != -1 && ice[i] < l && flag == 0){
//                l = ice[i];
//            }else if (ice[i] != -1 && ice[i] < r && flag == 1){
//                r = ice[i];
//            }else {
//                flag = 1;
//            }
//        }
//        System.out.println(l + r);


//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        int[] a = new int[n];
//        int[] b = new int[n];
//        long sum = 0;
//        for (int i = 0; i < n; i++){
//            a[i] = in.nextInt();
//        }
//        for (int i = 0; i < n; i++){
//            b[i] = in.nextInt();
//        }
//        for (int i = 0; i < n; i++){
//            if (a[i] * b[i] >= 0){
//                sum += Math.abs(a[i] - b[i]);
//            }else {
//                sum += Math.abs(a[i] + b[i]);
//            }
//        }
//        System.out.println(sum);


//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
////        int[] a = new int[n];
//        int count = 0;
//        Set<Integer> set = new HashSet<>();
//        for (int i = 0; i < n; i++){
////            a[i] = in.nextInt();
//            set.add(in.nextInt());
//        }
//        int s = in.nextInt();
//        for (int i = 1; i < s; i++){
//            if (set.contains(i)){
//                continue;
//            }
//            if (set.contains(s - i)){
//                continue;
//            }
//            count ++;
//        }
//        System.out.println(count);


//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        int count = 0;
//        Set<Integer> set = new HashSet<>();
//        for (int i = 0; i < n; i++){
//            set.add(in.nextInt());
//        }
//        int s = in.nextInt();
//        for (int i = 1; i < s; i++){
//            if (set.contains(i)){
//                continue;
//            }
//            if (set.contains(s - i)){
//                continue;
//            }
//            count ++;
//        }
//        System.out.println(count);



//        Scanner in = new Scanner(System.in);
//        int n = in.nextInt();
//        long count = 0;
//        Set<Long> set = new HashSet<>();
//        for (int i = 0; i < n; i++){
//            set.add(in.nextLong());
//        }
//        long s = in.nextLong();
//        if (s % 2 == 0){
//            for (int i = 1; i < s / 2; i++){
//                if (set.contains(i)){
//                    continue;
//                }
//                if (set.contains(s - i)){
//                    continue;
//                }
//                count ++;
//            }
//        }else {
//            for (int i = 1; i < (s + 1) / 2; i++){
//                if (set.contains(i)){
//                    continue;
//                }
//                if (set.contains(s - i)){
//                    continue;
//                }
//                count ++;
//            }
//        }
//        if (s % 2 == 0){
//            System.out.println( 2 * count +1);
//        }else {
//            System.out.println(2 * count);
//        }

        String s = "aababbabb";
        int n = s.length();
        int minBlocks = n; // 初始化最小连通块数量为字符串长度

        for (int x = 1; x <= n; x++) {
            if (n % x == 0) { // 只考虑满足 n = x * y 的情况
                int y = n / x;
                boolean[][] dp = new boolean[n][n];
                for (int i = 0; i < n; i++) {
                    dp[i][i] = true;
                }

                for (int i = n - 1; i >= 0; i--) {
                    for (int j = i + 1; j < n; j++) {
                        dp[i][j] = dp[i + 1][j - 1] && (s.charAt(i) == s.charAt(j));
                    }
                }

                int blocks = 0;
                for (int i = 0; i < n; i += y) {
                    for (int j = i; j < n; j += y) {
                        if (!dp[i][j]) {
                            blocks++;
                        }
                    }
                }

                minBlocks = Math.min(minBlocks, blocks);
            }
        }
        System.out.println(minBlocks);
    }
}
